home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dbase / laserenv.zip / LASERENV.PRG < prev    next >
Text File  |  1988-12-17  |  12KB  |  464 lines

  1. *:*********************************************************************
  2. *:
  3. *:        Program: LASERENV.PRG
  4. *:
  5. *:         System: LASER ENVELOPE UTILITY 1.0
  6. *:         Author: Etienne Muson
  7. *:      Copyright (c) 1988, MUSON SPECIALTIES
  8. *:  Last modified: 12/16/88     13:15
  9. *:
  10. *:  Procs & Fncts: BARFRAME
  11. *:               : GETBIN
  12. *:               : SETBAR
  13. *:
  14. *:          Calls: BARFRAME         (procedure in LASERENV.PRG)
  15. *:               : GETBIN           (procedure in LASERENV.PRG)
  16. *:               : SETBAR           (procedure in LASERENV.PRG)
  17. *:
  18. *:           Uses: ADLIST.DBF     
  19. *:
  20. *:        Indexes: ADLIST.NDX
  21. *:
  22. *:   Memory Files: RETURN.ADD
  23. *:
  24. *:     Documented: 12/16/88 at 13:16               FoxDoc version 1.0
  25. *:*********************************************************************
  26. * ---- Designed to fit a standard business envelope, 9 1/2" by 4 1/8".
  27. * ----
  28. SET TALK OFF
  29. SET BELL OFF
  30. SET STATUS OFF
  31. SET SAFETY OFF
  32. SET EXACT ON
  33. SET DELIMITERS ON
  34. SET DELIMITERS TO [▐▌]
  35. SET CONFIRM ON
  36. SET PROCEDURE TO LASERENV
  37. RESTORE FROM RETURN.ADD ADDITIVE
  38. * ---- Set Up Public Variables
  39. PUBLIC mrow,mrow2,mcol,mcol2,m_lin,b_bin,mwide,mwide2,mhigh,fillp,fox
  40. * ----
  41. * The Following Lines Assume A Soft Font In Positions 14, And 15
  42. * This May Be Changed, Or Left Alone. It Will Print In The Default
  43. * Font If No Soft Fonts Exist At These Locations.
  44. * ----
  45. * ---- 12 Point Classic PS Font
  46. font1 = CHR(27)+CHR(40)+[14]+CHR(88)
  47. * ---- 14 Point Classic PS Font
  48. font2 = CHR(27)+CHR(40)+[15]+CHR(88)
  49. * ---- Default Font
  50. fontdef= CHR(27)+CHR(40)+CHR(51)+CHR(64)
  51. * ---- Landscape Codes
  52. land = CHR(27)+[&l1O]
  53.  
  54. * ---- Open Name And Adress Database/Index (Index Is On CODE)
  55. USE ADLIST INDE ADLIST
  56. GO TOP
  57.  
  58. DO WHILE .T.
  59.    CLEAR
  60.    DO TITLINE WITH 1,5,[Laser Envelope Main Options]
  61.    m_select = 0
  62.    * ---- These Lines Of Code Can Be Removed To Remove The Message Next
  63.    * ---- To The Menu
  64.    IF CODE = [MSP]
  65.       @10,50 SAY [MUSON SPECIALTIES]
  66.       @11,50 SAY [For A Test Envelope]
  67.       @12,50 SAY [Use Code MSP]
  68.       @14,50 SAY [To Remove This Message,]
  69.       @15,50 SAY [Delete Code MSP In #1 Spot.]
  70.    ENDIF
  71.    * ---- End Of Removable Code Lines
  72.    * ---- Options Menu
  73.    @10, 10 SAY [1.  Change Return Address.]
  74.    @12, 10 SAY [2.  Add New Addressee.]
  75.    @14, 10 SAY [3.  Browse Addressee File.]
  76.    @16, 10 SAY [4.  Print An Envelope.]
  77.    @18, 10 SAY [0.  Quit.]
  78.    @20, 10 SAY [Select : ] GET m_select PICT [9]
  79.    READ
  80.  
  81. DO CASE
  82.    CASE m_select = 0
  83.         EXIT
  84.    CASE m_select = 1
  85.         CLEAR
  86.         DO TITLINE WITH 1,5,[Change Return Address]
  87.         * ---- New Address Variables
  88.         n_add1 = r_add1+SPACE(40-LEN(r_add1))
  89.         n_add2 = r_add2+SPACE(40-LEN(r_add2))
  90.         n_add3 = r_add3+SPACE(40-LEN(r_add3))
  91.         n_add4 = r_add4+SPACE(40-LEN(r_add4))
  92.         * ---- Get Screen
  93.         @10, 10 SAY [Line 1  : ] GET n_add1
  94.         @12, 10 SAY [Line 2  : ] GET n_add2
  95.         @14, 10 SAY [Line 3  : ] GET n_add3
  96.         @16, 10 SAY [Line 4  : ] GET n_add4
  97.         @20, 10 SAY [Leave Blank For No Return Address.]
  98.         READ
  99.         * ---- Transfer To Address Variables
  100.         r_add1 = TRIM(n_add1)
  101.         r_add2 = TRIM(n_add2)
  102.         r_add3 = TRIM(n_add3)
  103.         r_add4 = TRIM(n_add4)
  104.         * ---- Save To File
  105.         SAVE ALL LIKE r_add* TO RETURN.ADD
  106.         LOOP
  107.    CASE m_select = 2
  108.         APPEND
  109.    CASE m_select = 3
  110.         BROWSE
  111.    CASE m_select = 4
  112.    CLEAR
  113.    m_code = SPACE(5)
  114.    DO TITLINE WITH 1,5,[Print An Envelope]
  115.    @ 8, 10 SAY [Laser Printer Envelope Printing Utility.]
  116.    @10, 10 SAY [Addressee Code ? ] GET m_code PICT [@!]
  117.    @12, 10 SAY [Blank To Quit.]
  118.    READ
  119.    m_code = TRIM(m_code)
  120.    IF LEN(m_code) = 0
  121.       EXIT
  122.    ENDIF
  123.    
  124.    SEEK m_code
  125.    IF ! FOUND()
  126.       ?? CHR(7)
  127.       @20, 10 SAY [That Code Not Found. Press Any Key...]
  128.       WAIT []
  129.       LOOP
  130.    ENDIF
  131.    
  132.    @12, 0 CLEAR
  133.    * ---- Must Have One
  134.    DO WHILE .T.
  135.       @12, 10 SAY LINE_1
  136.       @13, 10 SAY LINE_2
  137.       @14, 10 SAY LINE_3
  138.       @15, 10 SAY LINE_4
  139.       @16, 10 SAY LINE_Z
  140.       @18, 10 SAY [Press Any Key To Print, Or 'E' To Edit...]
  141.       WAIT [] TO m_ok
  142.       IF UPPER(m_ok) = [E]
  143.          @12, 10 SAY LINE_1 GET LINE_1
  144.          @13, 10 SAY LINE_2 GET LINE_2
  145.          @14, 10 SAY LINE_3 GET LINE_3
  146.          @15, 10 SAY LINE_4 GET LINE_4
  147.          @16, 10 SAY LINE_Z GET LINE_Z
  148.          READ
  149.          @12, 0 CLEAR
  150.          LOOP
  151.       ELSE
  152.          EXIT
  153.       ENDIF
  154.    ENDDO edit
  155.    
  156.    SET CONSOLE OFF
  157.    
  158.    * ---- Turn On Landscape Mode.
  159.    SET PRINT ON
  160.    ?? land
  161.    * ---- SET LINE SPACING 4 LPI
  162.    * ---- 48/4 = 12 For The n/48 Command
  163.    ?? CHR(27)+[&l12C]
  164.    SET PRINT OFF
  165.    
  166.    SET DEVICE TO PRINT
  167.  
  168.    z_disp = TRIM(LINE_Z)
  169.    IF LEN(z_disp) > 5
  170.       z_disp = LEFT(z_disp,5)+[-]+RIGHT(z_disp,4)
  171.    ENDIF
  172.    
  173.    * ---- Return Address
  174.    @ 8, 20 SAY font2+r_add1+fontdef
  175.    @ 9, 20 SAY font1+r_add2+fontdef
  176.    @10, 20 SAY font1+r_add3+fontdef
  177.    @11, 20 SAY font1+r_add4+fontdef
  178.    
  179.    * ---- Main Address
  180.    @ 16, 65 SAY font2+TRIM(LINE_1)+fontdef
  181.    @ 17, 65 SAY font1+TRIM(LINE_2)+fontdef
  182.    @ 18, 65 SAY font1+TRIM(LINE_3)+fontdef
  183.    @ 19, 65 SAY font1+TRIM(LINE_4)+[ ]+z_disp+fontdef
  184.    
  185.    SET DEVICE TO SCREEN
  186.    * --------------------------------------------------
  187.    * ---- ZIPBARS - Created For The HP LJET II, Or Close Compatible.
  188.    * ---- Prints The Standard Zip Barcode For Either A 5 Digit,
  189.    * ---- Or 9 Digit Zip Code In The Appropriate Location On An Envelope.
  190.    * ----
  191.    * ---- Designed to fit a standard business envelope, 9 1/2" by 4 1/8".
  192.    * ---- The bar code is printed on the lower right-hand corner, within
  193.    * ---- the specifications set forth by the U.S. Post office.
  194.    * ----
  195.    * ---- [mrow]  = Cursor Start Row
  196.    * ---- [mwide] = Shaded Box Width (In D.P.I.)
  197.    * ---- [mhigh] = Shaded Box Height (In D.P.I.)
  198.    * ---- [fillp] = Fill Pattern # (See Below)
  199.    * ---- [fillt] = Fill Type. [P]=Pattern, [S]=Shade
  200.    * ---- Shade Values:
  201.    * ---- 100 =100% Gray
  202.    * --------------------------------------------------
  203.    
  204.    * ---- Beginning Row
  205.    mrow2  = 69
  206.    
  207.    * ---- Start Col. For Barcode
  208.    mcol   = 145
  209.    
  210.    * ---- Bar Heights In Decipoints
  211.    * ---- Low Bar = .050"  (0)
  212.    mhigh0 = [15]
  213.    * ---- High Bar = .125" (1)
  214.    mhigh1 = [38]
  215.    
  216.    * ---- Bar Thickness In Decipoints
  217.    * ---.O2O" Width Of Bar
  218.    mwide  = [6]
  219.    
  220.    * ---- Fill Pattern = 100% Gray (Black)
  221.    fillp  = [100]
  222.    
  223.    m_zip = TRIM(LINE_Z)
  224.    
  225.    @12, 0 CLEAR
  226.    @12, 10 SAY [Printing...]
  227.    
  228.    b_code = TRIM(m_zip)
  229.    b_len  = LEN(b_code)
  230.    x = 1
  231.    m_sum = 0
  232.    
  233.    * ---- Turn On Printer To Accept Codes
  234.    SET PRINT ON
  235.    
  236.    * ---- Position Cursor To Row
  237.    mrowx = LTRIM(STR(mrow2))
  238.    ?? CHR(27)+CHR(38)+CHR(97)+mrowx+CHR(82)
  239.    
  240.    * ---- SET CHAR SPACING 21 CPI
  241.    * ---- 120/21 = 5.71 For The n/120 Command
  242.    ?? CHR(27)+[&k5.71H]
  243.    
  244.    * ---- SET LINE SPACING 13 LPI
  245.    * ---- 48/13 = 3.69 For The n/48 Command
  246.    ?? CHR(27)+[&l3.69C]
  247.    
  248.    * ---- As Many As Length Of Zip Code
  249.    DO WHILE x <=b_len
  250.       
  251.       * ---- Do Opening Frame Bar
  252.       IF x = 1
  253.          mcol1  = LTRIM(TRIM(STR(mcol)))
  254.          mcol = mcol + 1
  255.          DO BARFRAME
  256.       ENDIF
  257.       
  258.       * ---- Get Digit To Process
  259.       m_digit = SUBST(b_code,x,1)
  260.       
  261.       * ---- Prepare For Checksum
  262.       m_sum = m_sum + VAL(m_digit)
  263.       
  264.       * ---- Get Binary Data
  265.       DO GETBIN WITH m_digit
  266.       
  267.       * ---- Now Process Binary Digits
  268.       y = 1
  269.       
  270.       * ---- Five Times Per Number
  271.       DO WHILE y <6
  272.          
  273.          * ---- Get A 1, Or A 0
  274.          m_lin = SUBST(b_bin,y,1)
  275.          
  276.          * ---- Change Row To Character
  277.          mcol1  = LTRIM(TRIM(STR(mcol)))
  278.          
  279.          * ---- Position Cursor To Column
  280.          ?? CHR(27)+[&a]+mcol1+[C]
  281.          
  282.          * ---- Print Bar
  283.          DO SETBAR
  284.          
  285.          * ---- Move Up A Column
  286.          mcol = mcol + 1
  287.          
  288.          * ---- Move To Next Digit
  289.